Before you read this, make sure you are using the TI-92 Font! () Prgm © Set modes setMode("Angle","Degree") setMode("Pretty Print","On") setMode("Exact/Approx","Exact") setMode("Split Screen","Full") © End set mode © Start Info Screens ClrIO Disp "This program will produce information" Disp "about affine transformations of" Disp "the form" Disp "" Disp "x'= ax + by + h" Disp "y'= cx + dy + k" Pause "ENTER to continue." ClrIO Disp "x'= ax + by + h" Disp "y'= cx + dy + k" Input "enter a",a Input "enter b",b Input "enter h",h ClrIO Disp "x'= ax + by + h" Disp "y'= cx + dy + k" Input "enter c",c Input "enter d",d Input "enter k",k [[a,b,h][c,d,k]]givtrans ClrIO © Testing for invertability If a*d-b*c=0 Then Disp givtrans Disp "Not an affine" Disp "transformation." Disp "Press 2nd ESC to exit" Goto finish EndIf © finding fixed points givtrans-[[1,0,2*h][0,1,2*k]]f rref(f)redtrans det(subMat(redtrans,1,1,1,1))red11 det(subMat(redtrans,1,2,1,2))red12 det(subMat(redtrans,1,3,1,3))red13 det(subMat(redtrans,2,1,2,1))red21 det(subMat(redtrans,2,2,2,2))red22 det(subMat(redtrans,2,3,2,3))red23 [[red13,red23]]fixedpt If red11*red22-red21*red12=1 Then 1numfp Goto endfixpt EndIf If abs(red21)+abs(red22)+abs(red23)=0 Then 2numfp Else 0numfp EndIf Lbl endfixpt © checking similarity If a^2­d^2 Then Goto notsimil EndIf If b^2­c^2 Then Goto notsimil EndIf det([[a,b][c,d]])trandet If trandet=a^2+b^2 Then Goto simila EndIf If trandet=Ð(a^2+b^2) Then Goto simila EndIf Lbl notsimil Disp givtrans Disp "Not a similarity." If numfp=1 Then Disp "Fixed point at",fixedpt EndIf Disp "Run 'Tratio()'" Disp "for more information." Goto done © Start of similarity Lbl simila If abs(trandet)=1 Then Goto isometry EndIf Disp givtrans Disp "is a similarity." If numfp=1 Then Disp "Fixed point is",fixedpt EndIf Disp "Scale factor is ",Ã(abs(trandet)) Goto done © Start of isometry Lbl isometry Disp "<<>>" If trandet=1 Then Goto direct EndIf If numfp=0 Then Goto glidref EndIf © Start reflection Disp givtrans Disp "is a reflection." Disp "Reflection line" [[red11,red12,red13]]fixline Disp fixline Goto done © Start of glide reflection Lbl glidref Disp givtrans Disp "Glide Reflection" [[a,b][c,d]]*[[1][1]]+[[h][k]]imgpq (imgpq+[[1][1]])/2midpq [[a,b][c,d]]*[[Ð1][Ð1]]+[[h][k]]imgrs (imgrs+[[Ð1][Ð1]])/2midrs Disp "Axis of reflection" det([[1,0]]*midpq)p det([[0,1]]*midpq)q det([[1,0]]*midrs)r det([[0,1]]*midrs)s Disp y=(s-q)/(r-p)*(x-p)+q Disp "Glide vector" [[a,b][c,d]]*[[p][q]]+[[h][k]]tranpq det([[1,0]]*tranpq)tp det([[0,1]]*tranpq)tq tp-pvp tq-qvq vp*[[1,0]]vvp vq*[[0,1]]vvq vvp+vvqvector Disp vector 2numfp Goto done Lbl direct If numfp=1 Then Goto rotation EndIf 0numfp © Start translation Disp givtrans Disp "Translation," Disp "by vector" Disp [[h,k]] Goto done © Start rotation Lbl rotation © choosing quadrant © special case a=0 If a=0 Then sin(c)rotangle EndIf If a=0 Then Goto printrot EndIf ©special case c=0 If c=0 Then cos(a)rotangle EndIf If c=0 Then Goto printrot EndIf If a>0 Then Goto apositiv © must be 1 or 4 EndIf If b>0 Then Ð1*cos(a)rotangle © 2 nd quad Else cos(a)rotangle © 3 rd quad EndIf Goto printrot Lbl apositiv If b>0 Then Ð1*cos(a)rotangle © 1 st quad Else cos(a)rotangle © 4 th quad EndIf © End choosing quadrant Lbl printrot Disp givtrans Disp "Rotation of ",rotangle Disp "around the point",fixedpt Lbl done Pause "ENTER to continue" ClrIO Disp "" Disp "Press 2nd ESC to end" Disp "after viewing graph" Disp "" Disp "ENTER to continue" Pause © Graph triangles ClrGraph a+b+hm1 a+3*b+hm2 2*a+b+hm3 c+d+km4 c+3*d+km5 2*c+d+km6 © clearing & Squaring Screen ZoomStd Ð5ymin 5ymax Ð10xmin 10xmax Line 1,1,1,3 Line 1,3,2,1 Line 2,1,1,1 Line m1,m4,m2,m5 Line m2,m5,m3,m6 Line m3,m6,m1,m4 © printing fixed line If numfp=1 Then PtOn red13,red23 Goto finish EndIf If numfp=0 Then Goto finish EndIf If red12=0 Then LineVert red13 Goto finish EndIf red13/red12ycord Ð1*red11/red12lslope If numfp=2 Then DrawSlp 0,ycord,lslope EndIf Lbl finish ClrGraph EndPrgm ÿ